1. Field of the Invention
This invention relates to computer processors and, more particularly, to methods and apparatus for allowing a computer processor to process instructions written for older processors which would normally generate an error response in the newer processor.
2. History of the Prior Art
The most prevalent design of personal computers at the present time is based on the microprocessors manufactured by Intel Corporation including the 8086, 8088, 80286, i386.TM., and i486.TM. microprocessors (hereinafter referred to as the Intel microprocessors).
The Intel microprocessors have a relatively involved memory architecture. This structure grew because of the constant attempt to allow later microprocessor models to run programs designed for the earlier microprocessors while, at the same time, increasing the amount of memory and the speed of operation of the later microprocessors.
Because of the need to make each more advanced Intel microprocessor run the instructions which may be run on older Intel microprocessors, the instruction set for the Intel microprocessors has become quite complicated. Instructions are of variable length and can be from one to fifteen bytes. An instruction may consist of several fields. The instruction fields may include up to four bytes of prefix information, one byte of opcode, zero or one byte of ModR/M information, one byte of scale/index/base (SIB) information, up to four bytes of displacement information, and up to four bytes of immediate information. All of the fields other than the opcode are optional; thus, an instruction of the minimum length is a one byte instruction which contains only the opcode defining a particular operation. The details of the individual elements of instructions running on the presently most advanced of the Intel microprocessors are described in i486 Microprocessor, Programmer's Reference Manual, published by Osborne McGraw-Hill, 1990, pp. 26-1 et seq.
Many of the instructions which run on the more modern Intel microprocessors will not run on earlier Intel microprocessors. For example, the SIB byte is present only in thirty-two bit instructions and, consequently, has an effect only with i386 and later Intel microprocessors which are capable of using these instructions. On the other hand, it has been discovered that certain programs written for earlier processors contain instructions which may be interpreted by the more advanced processors in a manner which causes incorrect operation of the more advanced processors. It is desirable that the more advanced processors be capable of running these programs. It is therefore desirable to correct the invalid results produced in later Intel microprocessors by various instructions in programs designed for earlier Intel microprocessors.